import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QMenu
from PyQt5.QtGui import QIcon


class Example(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        # 创建一个退出动作
        exitAct = QAction(QIcon('exit.png'), '退出', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.setStatusTip('退出应用程序')
        exitAct.triggered.connect(self.close)

        # 创建一个临时动作，用于弹出菜单
        tempAct = QAction(QIcon('dog.png'), '弹出', self)
        tempAct.setShortcut('Ctrl+E')
        tempAct.setStatusTip('弹出窗口')
        tempAct.triggered.connect(self.createPopupMenu)

        # 创建一个菜单栏并添加退出动作
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&文件')
        fileMenu.addAction(exitAct)
        fileMenu.addAction(tempAct)

        self.setWindowTitle('弹出菜单示例')
        self.setGeometry(300, 300, 300, 200)
        self.show()

    def createPopupMenu(self):
        # 创建弹出菜单
        popupMenu = QMenu(self)

        # 添加一些动作到弹出菜单
        action1 = QAction('动作 1', self)
        action2 = QAction('动作 2', self)
        popupMenu.addAction(action1)
        popupMenu.addAction(action2)

        # 在鼠标位置弹出菜单
        pos = self.cursor().pos()
        action = popupMenu.exec_(pos)

        # 如果一个动作被触发，打印信息
        if action:
            print(f'触发动作：{action.text()}')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
